import { message as alertMessage } from 'antd';
import request, { extend } from 'umi-request';

request.interceptors.request.use((url, options) => {
  options.headers = {
    ...options.headers,
    Authorization: localStorage.token,
  };
  return {
    url,
    options,
  };
});

//axios设置响应拦截器
request.interceptors.response.use(async (response, options) => {
  if (response.status === 200) {
    //正常返回
    const res: { code: any; data: any } = await response.json();
    //进行正确处理
    if (res.code === 200) {
      return res.data;
    } else {
      //进行错误处理
      //1.该接口不需要错误处理
      if (options.noError) {
        return res;
      } else {
        //2.使用通用错误处理
        const message = res.msg;
        console.error(message);
        alertMessage.error(message);
        throw message;
      }
    }
  } else {
    const status = response.status;
    const message = res.msg;
    //也可以在里面判断401等逻辑
    if (status === 401) {
      //情况local 跳转登录页面
    }
    console.error(message);
    alertMessage.error(message);
    throw message;
  }
});

//定义全局请求都需要的东西，避免重复定义
//extend里面 只应该有静态的不会改变的数据
const http = extend({
  //超时时间 单位毫秒 1000毫秒 = 1秒
  timeout: 5000,
  //请求前缀
  prefix: '/api',
  credentials: 'include', // 允许跨域携带凭证（例如 cookie）

  headers: {
    'Content-Type': 'application/json',
    // 'Access-Control-Allow-Origin': '*',
  },
});

export default http;
